package com.rem.se.annotation;

import java.lang.annotation.*;

/**
 * 元注解
 *
 * @author Rem
 * @date 2021-03-14
 */

public class Demo02 {


    @MyAnnotation2(great = 3)
    public void t1() {

    }

    @MyAnnotation3("abc")
    public void t2() {

    }

}

/**
 * 自定义一个元注解 没有参数
 */

//表示可以作用在类上和作用在方法上
@Target({ElementType.TYPE, ElementType.METHOD})
//注解使用的范围：运行时   RUNTIME>CLASS>SOURCE
@Retention(RetentionPolicy.RUNTIME)
//可以出现在javadoc中
@Documented
//子类可以继承父类的注解
@Inherited
@interface MyAnnotation {

}

/**
 * 自定义一个元注解2
 */
@interface MyAnnotation2 {

    //注解的参数：类型+参数名()[default 默认值];
    String name() default "";

    int age() default 12;

    String[] schools() default {"aa", "bb"};

    int great();
}


/**
 * 自定义一个元注解3
 */
@interface MyAnnotation3 {

    // 默认一个参数使用value
    String value() default "";


}